import java.io.*;
import java.net.*;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

public class WebHunter extends JFrame implements ActionListener {
  private Box centerPane;
  private JTextField sourceFile;

  public WebHunter() {
    super("WebHunter");

    build();

    pack();
    setResizable(false);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setVisible(true);
  }

  public void actionPerformed(ActionEvent evt) {
    URL source;
    try {
       source = new URL(sourceFile.getText());
    } catch (MalformedURLException me) {
       JOptionPane.showMessageDialog(this, "Invalid URL.", "Download error", JOptionPane.ERROR_MESSAGE);
       return;
    }

    JFileChooser chooser = new JFileChooser();
    chooser.setSelectedFile(new File(new File(source.getFile()).getName()));
    chooser.showSaveDialog(this);
    File target = chooser.getSelectedFile();

    JProgressBar bar;
    JPanel panel = new JPanel(new GridLayout(3, 2));  

    panel.add(new JLabel("Source: "));
    panel.add(new JLabel(sourceFile.getText()));
    panel.add(new JLabel("Target: "));
    panel.add(new JLabel(target.getAbsolutePath()));
    panel.add(new JLabel("Progress: "));
    panel.add(bar = new JProgressBar());
    panel.setBorder(new EmptyBorder(0, 3, 0, 3));
 
    bar.setStringPainted(true);
   
    centerPane.add(Box.createVerticalStrut(3));
    centerPane.add(new JSeparator());
    centerPane.add(Box.createVerticalStrut(3));
    centerPane.add(panel);
    centerPane.add(Box.createVerticalStrut(3));

    pack();
  }

  private void build() {
    getContentPane().setLayout(new BorderLayout());
    getContentPane().add(BorderLayout.NORTH,  buildDownloadPane());
    getContentPane().add(BorderLayout.CENTER, centerPane = Box.createVerticalBox());
  }

  private Container buildDownloadPane() {
    JPanel panel = new JPanel();
    JButton button;

    panel.add(new JLabel("File to download: "));
    panel.add(sourceFile = new JTextField(15));
    panel.add(button = new JButton("Download..."));

    sourceFile.setText("http://jext.free.fr/macos7.jpg");
    button.addActionListener(this);

    return panel;
  }

  public static void main(String[] args) {
    new WebHunter();
  }
}
